]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
shellDBus: Add new 'ExtensionStateChanged' signal
authorFlorian Müllner <fmuellner@gnome.org>
Mon, 8 Jul 2019 10:21:10 +0000 (12:21 +0200)
committerFlorian Müllner <florian.muellner@gmail.com>
Sat, 20 Jul 2019 14:17:35 +0000 (14:17 +0000)
The existing 'ExtensionStatusChanged' signal has a fixed set of parameters,
which means we cannot add additional state without an API break.  Deprecate
it in favor of a new 'ExtensionStateChanged' signal which addresses this
issue by taking the full serialized extension as parameter.

https://bugzilla.gnome.org/show_bug.cgi?id=789852

data/dbus-interfaces/org.gnome.Shell.Extensions.xml
js/extensionPrefs/main.js
js/ui/extensionSystem.js
js/ui/shellDBus.js

index 309a9f20720a03cba076332b6920776ac24d986e..61c898e3d14fac66d82f6ccf5fb1edcb98c36637 100644 (file)
     -->
     <method name="CheckForUpdates"/>
 
+    <signal name="ExtensionStateChanged">
+      <arg type="s" name="uuid"/>
+      <arg type="a{sv}" name="state"/>
+    </signal>
+
+    <!--
+        ExtensionStatusChanged:
+        Deprecated for ExtensionStateChanged
+    -->
     <signal name="ExtensionStatusChanged">
       <arg type="s" name="uuid"/>
       <arg type="i" name="state"/>
index d82dde426a6eac6dad654d211aad95bdae1b378c..be543a4bad2ac81be490b69dd89e3cf1b22e7af5 100644 (file)
@@ -246,7 +246,7 @@ var Application = GObject.registerClass({
         this._mainStack.add_named(new EmptyPlaceholder(), 'placeholder');
 
         this._shellProxy = new GnomeShellProxy(Gio.DBus.session, 'org.gnome.Shell', '/org/gnome/Shell');
-        this._shellProxy.connectSignal('ExtensionStatusChanged', (proxy, senderName, [uuid, state, error]) => {
+        this._shellProxy.connectSignal('ExtensionStateChanged', (proxy, senderName, [uuid, state]) => {
             if (ExtensionUtils.extensions[uuid] !== undefined)
                 this._scanExtensions();
         });
index 0b22783cc84e2bd233a7a613e1798fc91b25c1fa..84a79170b87a7ac8a3f59ce1cd5f04532c76e2a7 100644 (file)
@@ -159,15 +159,14 @@ var ExtensionManager = class {
 
         let message = `${error}`;
 
+        extension.error = message;
         extension.state = ExtensionState.ERROR;
         if (!extension.errors)
             extension.errors = [];
         extension.errors.push(message);
 
         log('Extension "%s" had error: %s'.format(uuid, message));
-        this.emit('extension-state-changed', { uuid: uuid,
-                                               error: message,
-                                               state: extension.state });
+        this.emit('extension-state-changed', extension);
     }
 
     loadExtension(extension) {
index 64e80b42f33911a297f4c3f01f21f84160d5aa4a..424aef56791c2f0e4e3be9df01a9e52d8c95f57b 100644 (file)
@@ -320,6 +320,10 @@ var GnomeShellExtensions = class {
     }
 
     _extensionStateChanged(_, newState) {
+        let state = ExtensionUtils.serializeExtension(newState);
+        this._dbusImpl.emit_signal('ExtensionStateChanged',
+            new GLib.Variant('(sa{sv})', [newState.uuid, state]));
+
         this._dbusImpl.emit_signal('ExtensionStatusChanged',
                                    GLib.Variant.new('(sis)', [newState.uuid, newState.state, newState.error]));
     }